/*    
 *  async. 默认是 true，即为异步方式，$.ajax执行后，会继续执行ajax后面的脚本，直到服务器端返回数据后，
 *	触发$.ajax里的success方法，这时候执行的是两个线程。
 *  async 设置为 false，则所有的请求均为同步请求，在没有返回值之前，同步请求将锁住浏览器，用户其它操作必须等待请求完成才可以执行。
 *     
 */

/* 为所有 AJAX 请求设置默认 请求方式 同步 */
$.ajaxSetup({
	async : false
});

layui.use([ 'laydate', 'form' ,'layer'], function() {
	var laydate = layui.laydate, form = layui.form, $ = layui.$,layer = layui.layer;
	// 只选年日期
	laydate.render({
		elem : '#grade',
		type : 'year',
		position : 'fixed',
		ready : function(date) { // 控件在打开时触发，回调返回一个参数：初始的日期时间对象
			initYear = date.year;
		},
		change : function(value, date, endDate) { // 年月日时间被切换时都会触发。回调返回三个参数，分别代表：生成的值、日期时间对象、结束的日期时间对象
			var selectYear = date.year;
			var differ = selectYear - initYear;
			if (differ != 15 && differ != -15) {
				if ($(".layui-laydate").length) {
					$("#grade").val(value);
					$(".layui-laydate").remove();
				}
			}
			initYear = selectYear;
		}
	});

	// 只选年月日期
	laydate.render({
		elem : '#begintime',
		type : 'month',
		position : 'fixed',
		ready : function(date) { // 控件在打开时触发，回调返回一个参数：初始的日期时间对象
			initYear = date.year;
		},
		change : function(value, date, endDate) { // 年月日时间被切换时都会触发。回调返回三个参数，分别代表：生成的值、日期时间对象、结束的日期时间对象
			var selectYear = date.year;
			var differ = selectYear - initYear;
			if (differ == 0) {
				if ($(".layui-laydate").length) {
					$("#begintime").val(value);
					$(".layui-laydate").remove();
				}
			}
			initYear = selectYear;
		}
	});

	// 只选年月日期
	laydate.render({
		elem : '#endtime',
		type : 'month',
		position : 'fixed',
		ready : function(date) { // 控件在打开时触发，回调返回一个参数：初始的日期时间对象
			initYear = date.year;
		},
		change : function(value, date, endDate) { // 年月日时间被切换时都会触发。回调返回三个参数，分别代表：生成的值、日期时间对象、结束的日期时间对象
			var selectYear = date.year;
			var differ = selectYear - initYear;
			if (differ == 0) {
				if ($(".layui-laydate").length) {
					$("#endtime").val(value);
					$(".layui-laydate").remove();
				}
			}
			initYear = selectYear;
		}
	});

	// 获取下拉框专业
	$.ajax({
		url : 'classes/MajorFindAllServlet?deptid=5',
		dataType : 'json',
		data : {
			'state' : 0
		}, // 查询状态为正常的所有机构类型
		type : 'post',
		success : function(data) {
			$.each(data, function(index, item) {
				$('#major').append(new Option(item.majorname, item.majorid));// 下拉菜单里添加元素
			});
			layui.form.render("select");
		}
	});

	// 二级联动根据专业获取班级
	form.on('select(major)', function(data) {
		$.ajax({
			type : 'POST',
			url : 'classes/ClassFindAllServlet',
			data : {
				'majorid' : $("#major").val()
			},
			dataType : 'json',
			success : function(data) {
				$("select[name='classes']").empty();
				var html = "<option value=''>请选择班级</option>";
				$("#classes").append(html);
				$.each(data, function(index, item) {
					$("#classes").append(
							new Option(item.classname, item.classid));
				});
				// 重新刷新了一下下拉框
				form.render('select'); // 重新渲染
			}
		});
	});
	/*----------------------------------------参赛人数统计（饼图）--------------------------------------------------*/
	function getNum(myChart) {
		var param = {
			'ram' : Math.random(),
			compname : $("#compname").val(),
			grade : '',
			major : $("#major").val(),
			classes : ''
		};
		var servicedata = [];
		var ledata = [];
		$.getJSON("StatisFindNumServlet", param, function(data) {
			var myDate = new Date();// 获取系统当前时间

			var obj = eval(data);

			for (var i = 0; i < obj.length; i++) {
				servicedata[i] = obj[i];
				ledata[i] = (myDate.getFullYear() - i) ;
				console.log(servicedata[i]);
				console.log("年级：" + ledata[i]);
			}

			myChart.setOption({
				title : {
					x : 'center'
				},
				tooltip : {
					trigger : 'item',
					formatter : "{a} <br/>{b} : {c} ({d}%)"
				},
				toolbox : {
					show : true,
					feature : {
						mark : {
							show : true
						},
						dataView : {
							show : true,
							readOnly : false
						},
						magicType : {
							show : true,
							type : [ 'pie', 'funnel' ],
							option : {
								funnel : {
									x : '25%',
									width : '50%',
									funnelAlign : 'left',
									max : 1548
								}
							}
						},
						restore : {
							show : true
						},
						saveAsImage : {
							show : true
						}
					}
				},
				legend : {
					orient : 'vertical',
					left : 'left',
					data : ledata
				},
				series : [ {
					name : '参赛人数',
					type : 'pie',
					radius : '100px',
					center : [ '50%', '200px' ],
					data : [ {
						value : servicedata[0],
						name : ledata[0]
					}, {
						value : servicedata[1],
						name : ledata[1]
					}, {
						value : servicedata[2],
						name : ledata[2]
					}, {
						value : servicedata[3],
						name : ledata[3]
					}, ]
				} ]
			});
		});
	}

	/*----------------------------------------获奖人数统计（饼图）--------------------------------------------------*/
	function getWin(myChart) {
		var param = {
			'ram' : Math.random(),
			//compname : $("#compname").val(),
			//grade : $("#grade").val(),
			//major : $("#major").val(),
			//classes : $("#classes").val()
			compname : 500,
			grade : 300,
			major : 200,
			classes : 100
		};
		var servicedata = [];
		$.getJSON("StatisFindWinServlet", param, function(data) {
			var obj = eval(data);
			for (var i = 0; i < obj.length; i++) {
				servicedata[i] = obj[i];
			}
			myChart.setOption({
				title : {
					// text : '获奖情况统计',
					x : 'center'
				},
				tooltip : {
					trigger : 'item',
					formatter : "{a} <br/>{b} : {c} ({d}%)"
				},
				toolbox : {
					show : true,
					feature : {
						mark : {
							show : true
						},
						dataView : {
							show : true,
							readOnly : false
						},
						magicType : {
							show : true,
							type : [ 'pie', 'funnel' ],
							option : {
								funnel : {
									x : '25%',
									width : '50%',
									funnelAlign : 'left',
									max : 1548
								}
							}
						},
						restore : {
							show : true
						},
						saveAsImage : {
							show : true
						}
					}
				},
				legend : {
					orient : 'vertical',
					left : 'left',
					data : [ "待定", "特等奖", "一等奖", "二等奖", "三等奖", "优秀奖", "未获奖" ]
				},
				series : [ {
					name : '获奖人数',
					type : 'pie',
					radius : '100px',
					center : [ '50%', '200px' ],
					data : [ {
						value : servicedata[0],
						name : '待定'
					}, {
						value : servicedata[1],
						name : '特等奖'
					}, {
						value : servicedata[2],
						name : '一等奖'
					}, {
						value : servicedata[3],
						name : '二等奖'
					}, {
						value : servicedata[4],
						name : '三等奖'
					}, {
						value : servicedata[5],
						name : '优秀奖'
					}, {
						value : servicedata[6],
						name : '未获奖'
					} ]
				} ]
			});
		});
	}

	/*----------------------------------------年级对比统计--------------------------------------------------*/
	function getYear(myChart) {
		var param = {
			'ram' : Math.random(),
			compname1 : $("#compname1").val(),
			begintime : $("#begintime").val(),
			endtime : $("#endtime").val()
		};
		var param2 = {
			'ram' : Math.random(),
			compname1 : $("#compname1").val(),
			begintime : $("#begintime").val(),
			endtime : $("#endtime").val()
		};
		var numdata = [];
		var awarddata = [];
		$.getJSON("StatisFindColumnServlet", param, function(data) {
			var obj = eval(data);
			for (var i = 0; i < obj.length; i++) {
				numdata[i] = obj[i];
			}
		});
		$.getJSON("StatisFindColumnWinServlet", param2, function(data) {
			var obj = eval(data);
			for (var i = 0; i < obj.length; i++) {
				awarddata[i] = obj[i];
			}
		});
		myChart.setOption({
			title : {
			// text : '各专业参赛获奖比较',
			// color: '#a9334c',
			// algin: 'center'
			},
			tooltip : {
				trigger : 'axis'
			},
			legend : {
				data : [ '参赛人数', '获奖人数' ]
			},
			toolbox : {
				show : true,
				feature : {
					mark : {
						show : true
					},
					dataView : {
						show : true,
						readOnly : false
					},
					magicType : {
						show : true,
						type : [ 'line', 'bar' ]
					},
					restore : {
						show : true
					},
					saveAsImage : {
						show : true
					}
				}
			},
			xAxis : [ {
				type : 'category',
				data : [ '数媒', '计科', '网工', '软工', '物联网' ]
			} ],
			yAxis : [ {
				type : 'value'
			} ],
			series : [ {
				name : '参赛人数',
				type : 'bar',
				data : numdata,
				color : '#01AADE'
			}, {
				name : '获奖人数',
				type : 'bar',
				data : awarddata,
			} ]
		});

	}

	var myChart = echarts.init(document.getElementById('pienum'));
	var recordChart = echarts.init(document.getElementById('piewin'));
	var yearChart = echarts.init(document.getElementById('chartyear'));

	getNum(myChart);
	getWin(recordChart);
	getYear(yearChart);

	//参赛人数统计饼图触发点击事件
	myChart.on('click', function(params) {
		layer.open({
			'ram' : Math.random(),
			type : 2,
			title: "参赛情况汇总",
			area : [ '100%', '100%' ],
			scrollbar: false,
			content : ['view/statistics/findStatis2.html'], // 调到查询页面
			success : function(layero, index) {
				var body = layer.getChildFrame('body', index);
				var iframeWin = window[layero.find('iframe')[0]['name']]; // 得到iframe页的窗口对象
				body.find('#grade').val(params.name);
				body.find('#compname').val($("#compname").val());
				
				//为弹框页面专业下拉框赋值
    		    $.ajax({
    				url : 'classes/MajorFindAllServlet?deptid=5',
    				dataType : 'json',
    				data : {
    					'state' : 0
    				}, //查询状态为正常的所有机构类型
    				type : 'post',
    				success : function(data) {
    					$.each(data, function(index, item) {
    						if (item.majorid == $("#major").val()) {
    							body.find('#majorid').append($("<option>").attr("value",item.majorid).attr("selected","selected").text(item.majorname));
							}else  {
								body.find('#majorid').append($("<option>").attr("value",item.majorid).text(item.majorname));
							}
    					});
    					iframeWin.layui.form.render("select");
    				}
    			});
			}
		})
	})
	
	//获奖情况统计触发点击事件
	recordChart.on('click', function(params) {
		layer.open({
			'ram' : Math.random(),
			type : 2,
			title: "参赛情况汇总",
			area : [ '100%', '100%' ],
			scrollbar: false,
			content : ['view/statistics/findStatis2.html'], // 调到查询页面
			success : function(layero, index) {
				var body = layer.getChildFrame('body', index);
				var iframeWin = window[layero.find('iframe')[0]['name']]; // 得到iframe页的窗口对象
				body.find('#grade').val($("#grade").val());
				body.find('#compname').val($("#compname").val());
				body.find('#classname').val($("#classname").val());
				body.find('#win').val(params.name);
				
				//为弹框页面专业下拉框赋值
    		    $.ajax({
    				url : 'classes/MajorFindAllServlet?deptid=5',
    				dataType : 'json',
    				data : {
    					'state' : 0
    				}, //查询状态为正常的所有机构类型
    				type : 'post',
    				success : function(data) {
    					$.each(data, function(index, item) {
    						if (item.majorid == $("#major").val()) {
    							body.find('#majorid').append($("<option>").attr("value",item.majorid).attr("selected","selected").text(item.majorname));
							}else  {
								body.find('#majorid').append($("<option>").attr("value",item.majorid).text(item.majorname));
							}
    					});
    					iframeWin.layui.form.render("select");
    				}
    			});
    		    iframeWin.layui.form.render();
			}
		})
	})
	
	//柱状图触发点击事件
	yearChart.on('click', function(params) {
		layer.open({
			'ram' : Math.random(),
			type : 2,
			title: "参赛情况汇总",
			area : [ '100%', '100%' ],
			scrollbar: false,
			content : ['view/statistics/findStatis2.html'], // 调到查询页面
			success : function(layero, index) {
				var body = layer.getChildFrame('body', index);
				var iframeWin = window[layero.find('iframe')[0]['name']]; // 得到iframe页的窗口对象
				body.find('#compname').val($("#compname1").val());
				
				
				//为弹框页面专业下拉框赋值
    		    $.ajax({
    				url : 'classes/MajorFindAllServlet?deptid=5',
    				dataType : 'json',
    				data : {
    					'state' : 0
    				}, //查询状态为正常的所有机构类型
    				type : 'post',
    				success : function(data) {
    					$.each(data, function(index, item) {
    						if (item.majorname == params.name) {
    							body.find('#majorid').append($("<option>").attr("value",item.majorid).attr("selected","selected").text(item.majorname));
							}else  {
								body.find('#majorid').append($("<option>").attr("value",item.majorid).text(item.majorname));
							}
    					});
    					iframeWin.layui.form.render("select");
    				}
    			});
			}
		})
	})

	// 点击查询按钮，重载echarts饼图
	$('#searchBtn').on('click', function() {
		getNum(myChart);
		getWin(recordChart);
		return false;
	});

	// 点击查询按钮，重载echarts柱状图
	$('#searchBtn2').on('click', function() {
		getYear(yearChart);
		return false;
	});

});
